/*
 * def.h
 *
 *  Created on: 2015年1月13日
 *      Author: chens
 */

#ifndef CM_STORAGE_DEF_H_
#define CM_STORAGE_DEF_H_

#include <cm/storage/cm_storage.h>

/*
 * @brief	仓库对象的定义
 * 		每个仓库用来存放同一种数据，每个数据大小一致
 * 		仓库当前体积 % 元素大小 == 0
 */
struct cm_storage {

	/* 存储类型
	 * 不同的存储类型有不同的：
	 * 	1、存储对象storage
	 * 	2、对应storage不同的初始化方式
	 * 	3、不同的读取和写入的方法
	 */
	enum CM_STORAGE_TYPE type;

	/* 仓库中元素的大小 */
	int objsize;

	/* 仓库中元素总个数 */
	int total;

	/* 第一个有效数据的偏移 */
	int offset;

	/* 用来进行存储操作的对象，文件或数据库 */
	void *storage;

	cm_serialize serialize;

	cm_unserialize unserialize;

	/* 数据文件路径 */
	char url[LEN_MAX_FILE_NAME];

// TODO other attributes
};

#endif /* DEF_H_ */
